package mylab.io.base.fsm;


import java.util.List;

import mylab.base.foundation.lang.Callback;

public interface DasState {

    /**
     * 当前状态标识
     */
    DasStatus getStatus();

    /**
     * 当前状态支持的行为列表
     */
    List<DasAction> getSupportedActions();

    /**
     * 在状态机上实施某个行为
     *
     * @param context  状态机上下文
     * @param action   实施的行为
     * @param callback 回调通知
     */
    void execute(FsmContext context, DasAction action, Callback<Void> callback);
}
